iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
Software Development

Laravel 隨筆學習札記系列 第 20

Day20 - 從請求到回應:探索 Laravel 的 Request Lifecycle

  • 分享至 

  • xImage
  •  

了解 Request Lifecycle(請求生命週期)就像知道一個流程,,了解這些能讓幫助我們更好地使用和開發網站。


Request Lifecycle

  1. 入口點:所有請求都從 public/index.php 文件開始。這個文件負責加載 Composer 自動加載器並獲取 Laravel 應用實例。

  2. HTTP / Console Kernels:請求會被發送到 HTTP kernel 或 console kernel ,具體取決於請求的類型。HTTP kernel 負責處理所有進入的 HTTP 請求。

  3. 啟動過程

    • HTTP kernel 定義了一系列啟動程序,這些程序在請求執行之前配置錯誤處理、日誌記錄和應用環境等。
    • 請求還會通過應用的 middleware stack 進行處理。
    • HTTP kernel 的 handle 方法 -> 接收一個 Request 並返回一個 Response
  4. Service Providers:Service Providers 是啟動 Laravel 應用的關鍵,它們負責加載各種組件,如資料庫、queue、驗證和路由等。每個主要功能都是通過 Service Providers 進行配置和啟動的。

  5. 路由:一旦應用啟動並且所有 Service Providers 都已註冊,請求將交給路由進行分派。路由會將請求發送到相應的控制器或路由,並運行任何特定於路由的 middleware。

  6. 完成請求:當控制器方法返回 response 後,該 response 將通過 middleware 返回,最終發送到用戶的瀏覽器。

https://ithelp.ithome.com.tw/upload/images/20241004/20169308OYSCvmdeFW.jpg


middleware

middleware 是一種過濾或檢查進入應用的 HTTP 請求的機制。它們可以用來執行許多任務,例如:

  • 驗證用戶是否已經登錄。
  • 檢查 CSRF 令牌。
  • 管理 HTTP 會話。

指派 middleware 到路由

  1. 定義 middleware:在 app/Http/Kernel.php 文件中定義 middleware,並為其指定一個鍵。例如:

    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];
    
  2. 指派 middleware:使用 middleware 方法將 middleware 指派給特定路由。例如:

    Route::get('/profile', function () {
        // ...
    })->middleware('auth');
    
  3. 多個middleware:可以同時指派多個 middleware:

    Route::get('/', function () {
        // ...
    })->middleware(['first', 'second']);
    
  4. **middleware群組 **:可以將多個 middleware 組合在一起,以便更方便地指派給路由。例如:

    Route::middleware(['web'])->group(function () {
        // ...
    });
    

參考資料

  1. Laravel 官方網站-Request Lifecycle
  2. Laravel Request Lifecycle 請求的生命週期
  3. Laravel Request Lifecycle: the best starting point for learning Laravel

踏著身心靈的塔羅腳步,轉向技術與邏輯的工程師之路,就藉由塔羅日抽來紀錄今日的學習與生活吧!

寶劍一:給自己的祝福就是持續的學習新知

“When you're curious, you find lots of interesting things to do.”

如果你有好奇心,你會找到很多有趣的事做。

  • Walt Disney

上一篇
Day19 - Laravel Request 的力量:簡化 HTTP 請求處理
下一篇
Day21 - 在 Laravel 世界中逐步掌握 HTTP Response 的秘密
系列文
Laravel 隨筆學習札記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言